package org.matheclipse.core.integrate.rubi45;


import static org.matheclipse.core.expression.F.*;
import static org.matheclipse.core.integrate.rubi45.UtilityFunctionCtors.*;
import static org.matheclipse.core.integrate.rubi45.UtilityFunctions.*;
import org.matheclipse.core.interfaces.IAST;

/** 
 * IndefiniteIntegrationRules from the <a href="http://www.apmaths.uwo.ca/~arich/">Rubi -
 * rule-based integrator</a>.
 *  
 */
public class IntRules52 { 
  public static IAST RULES = List( 
ISetDelayed(Int(Times(Power(Plus(a_,Times(b_DEFAULT,Power($($s("§cos"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),p_)),Times(c_DEFAULT,Power($($s("§sin"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),q_))),n_),Power($($s("§sin"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),m_)),x_Symbol),
    Condition(Module(List(Set(f,FreeFactors(Cot(Plus(d,Times(e,x))),x))),Times(CN1,f,Power(e,-1),Subst(Int(Times(Power(ExpandToSum(Plus(c,Times(b,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,q),Times(CN1,C1D2,p)))),Times(a,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Times(C1D2,q)))),x),n),Power(Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,m),Times(n,C1D2,q),C1)),-1)),x),x,Times(Cot(Plus(d,Times(e,x))),Power(f,-1))))),And(And(And(And(And(FreeQ(List(a,b,c,d,e),x),EvenQ(m)),EvenQ(p)),EvenQ(q)),IntegerQ(n)),And(Less(C0,p),LessEqual(p,q))))),
ISetDelayed(Int(Times(Power(Plus(a_,Times(c_DEFAULT,Power($($s("§cos"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),q_)),Times(b_DEFAULT,Power($($s("§sin"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),p_))),n_),Power($($s("§cos"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),m_)),x_Symbol),
    Condition(Module(List(Set(f,FreeFactors(Tan(Plus(d,Times(e,x))),x))),Times(f,Power(e,-1),Subst(Int(Times(Power(ExpandToSum(Plus(c,Times(b,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,q),Times(CN1,C1D2,p)))),Times(a,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Times(C1D2,q)))),x),n),Power(Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,m),Times(n,C1D2,q),C1)),-1)),x),x,Times(Tan(Plus(d,Times(e,x))),Power(f,-1))))),And(And(And(And(And(FreeQ(List(a,b,c,d,e),x),EvenQ(m)),EvenQ(p)),EvenQ(q)),IntegerQ(n)),And(Less(C0,p),LessEqual(p,q))))),
ISetDelayed(Int(Times(Power(Plus(a_,Times(b_DEFAULT,Power($($s("§cos"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),p_)),Times(c_DEFAULT,Power($($s("§sin"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),q_))),n_),Power($($s("§sin"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),m_)),x_Symbol),
    Condition(Module(List(Set(f,FreeFactors(Cot(Plus(d,Times(e,x))),x))),Times(CN1,f,Power(e,-1),Subst(Int(Times(Power(ExpandToSum(Plus(Times(a,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Times(C1D2,p))),Times(b,Power(f,p),Power(x,p)),Times(c,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,p),Times(CN1,C1D2,q))))),x),n),Power(Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,m),Times(n,C1D2,p),C1)),-1)),x),x,Times(Cot(Plus(d,Times(e,x))),Power(f,-1))))),And(And(And(And(And(FreeQ(List(a,b,c,d,e),x),EvenQ(m)),EvenQ(p)),EvenQ(q)),IntegerQ(n)),Less(Less(C0,q),p)))),
ISetDelayed(Int(Times(Power(Plus(a_,Times(c_DEFAULT,Power($($s("§cos"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),q_)),Times(b_DEFAULT,Power($($s("§sin"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),p_))),n_),Power($($s("§cos"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),m_)),x_Symbol),
    Condition(Module(List(Set(f,FreeFactors(Tan(Plus(d,Times(e,x))),x))),Times(f,Power(e,-1),Subst(Int(Times(Power(ExpandToSum(Plus(Times(a,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Times(C1D2,p))),Times(b,Power(f,p),Power(x,p)),Times(c,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,p),Times(CN1,C1D2,q))))),x),n),Power(Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,m),Times(n,C1D2,p),C1)),-1)),x),x,Times(Tan(Plus(d,Times(e,x))),Power(f,-1))))),And(And(And(And(And(FreeQ(List(a,b,c,d,e),x),EvenQ(m)),EvenQ(p)),EvenQ(q)),IntegerQ(n)),Less(Less(C0,q),p)))),
ISetDelayed(Int(Times(Power(Plus(a_,Times(b_DEFAULT,Power($($s("§cos"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),p_)),Times(c_DEFAULT,Power($($s("§sin"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),q_))),n_),Power($($s("§sin"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),m_)),x_Symbol),
    Condition(Module(List(Set(f,FreeFactors(Cot(Plus(d,Times(e,x))),x))),Times(CN1,f,Power(e,-1),Subst(Int(Times(Power(ExpandToSum(Plus(c,Times(b,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,q),Times(CN1,C1D2,p)))),Times(a,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Times(C1D2,q)))),x),n),Power(Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,m),Times(n,C1D2,q),C1)),-1)),x),x,Times(Cot(Plus(d,Times(e,x))),Power(f,-1))))),And(And(And(And(And(FreeQ(List(a,b,c,d,e),x),EvenQ(m)),EvenQ(p)),EvenQ(q)),IntegerQ(n)),And(Less(C0,p),LessEqual(p,q))))),
ISetDelayed(Int(Times(Power(Plus(a_,Times(c_DEFAULT,Power($($s("§cos"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),q_)),Times(b_DEFAULT,Power($($s("§sin"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),p_))),n_),Power($($s("§cos"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),m_)),x_Symbol),
    Condition(Module(List(Set(f,FreeFactors(Tan(Plus(d,Times(e,x))),x))),Times(f,Power(e,-1),Subst(Int(Times(Power(ExpandToSum(Plus(c,Times(b,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,q),Times(CN1,C1D2,p)))),Times(a,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Times(C1D2,q)))),x),n),Power(Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,m),Times(n,C1D2,q),C1)),-1)),x),x,Times(Tan(Plus(d,Times(e,x))),Power(f,-1))))),And(And(And(And(And(FreeQ(List(a,b,c,d,e),x),EvenQ(m)),EvenQ(p)),EvenQ(q)),IntegerQ(n)),And(Less(C0,p),LessEqual(p,q))))),
ISetDelayed(Int(Times(Power(Plus(a_,Times(b_DEFAULT,Power($($s("§cos"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),p_)),Times(c_DEFAULT,Power($($s("§sin"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),q_))),n_),Power($($s("§sin"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),m_)),x_Symbol),
    Condition(Module(List(Set(f,FreeFactors(Cot(Plus(d,Times(e,x))),x))),Times(CN1,f,Power(e,-1),Subst(Int(Times(Power(ExpandToSum(Plus(Times(a,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Times(C1D2,p))),Times(b,Power(f,p),Power(x,p)),Times(c,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,p),Times(CN1,C1D2,q))))),x),n),Power(Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,m),Times(n,C1D2,p),C1)),-1)),x),x,Times(Cot(Plus(d,Times(e,x))),Power(f,-1))))),And(And(And(And(And(FreeQ(List(a,b,c,d,e),x),EvenQ(m)),EvenQ(p)),EvenQ(q)),IntegerQ(n)),Less(Less(C0,q),p)))),
ISetDelayed(Int(Times(Power(Plus(a_,Times(c_DEFAULT,Power($($s("§cos"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),q_)),Times(b_DEFAULT,Power($($s("§sin"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),p_))),n_),Power($($s("§cos"),Plus(d_DEFAULT,Times(e_DEFAULT,x_))),m_)),x_Symbol),
    Condition(Module(List(Set(f,FreeFactors(Tan(Plus(d,Times(e,x))),x))),Times(f,Power(e,-1),Subst(Int(Times(Power(ExpandToSum(Plus(Times(a,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Times(C1D2,p))),Times(b,Power(f,p),Power(x,p)),Times(c,Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,p),Times(CN1,C1D2,q))))),x),n),Power(Power(Plus(C1,Times(Sqr(f),Sqr(x))),Plus(Times(C1D2,m),Times(n,C1D2,p),C1)),-1)),x),x,Times(Tan(Plus(d,Times(e,x))),Power(f,-1))))),And(And(And(And(And(FreeQ(List(a,b,c,d,e),x),EvenQ(m)),EvenQ(p)),EvenQ(q)),IntegerQ(n)),Less(Less(C0,q),p))))
  );
}
